package br.com.sgi.dao;

import java.io.Serializable;
import java.util.List;

public interface DaoGenerico<T> extends Serializable {
	
	
	/**
	 * deleta pelo ID
	 * @param id
	 */
	void deleteById(Serializable id);
	
	/**
	 * persiste 
	 * @param obj
	 */
	void save(T obj);
	
	/**
	 * seta o tipo da class corrente
	 * @param persistentClass
	 */
	void setPersistentClass(Class<T> persistentClass);
	
	/**
	 * busca todos os registros
	 * @return
	 */
	List<T> findAll();
	
	
	/**
	 * busca o registro pelo ID
	 * @param id
	 * @return
	 */
	T findById(Serializable id);
	
	/**
	 * Se o objeto existir, atualiza o objeto no banco. Se nao existir cria-se o objeto no banco.
	 * 
	 * @param obj o objeto
	 */
	<T> T update(T obj);
	
	
	
}

